home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / thesource-7.lha / Source / DefFunc.lha / DefFunc / dfcsymtable.h < prev    next >
C/C++ Source or Header  |  1993-12-14  |  3KB  |  102 lines

  1. /*********************************************************
  2.  *
  3.  *    Copyright (c) 1993  Ke Jin
  4.  *
  5.  *    Permission to use, copy, modify, and distribute
  6.  *    this software and its documentation without fee
  7.  *    is granted, provided that the author's name and
  8.  *    this copyright notice are retained.
  9.  *
  10.  * -----------------------------------------------------
  11.  *
  12.  *    dfcsymtable.h -- interface of defunc symbol table
  13.  *    
  14.  *    struct definition : Symbol_record;
  15.  *
  16.  *    external function : getsym(); 
  17.  *                        getfnctname();
  18.  *                        getarguname();
  19.  *                        initargu();
  20.  *
  21.  *                        nameargu();
  22.  *                        namefnct();
  23.  *                        namecnst();
  24.  *                        clrfnct();
  25.  *                        clrfnctall();
  26.  *                        clrcnst();
  27.  *                        clrcnstall();
  28.  *                        
  29.  *                        matha2z();
  30.  *
  31.  *********************************************************/
  32.  
  33. #ifndef _DFCSYMTABLE_H
  34. #define _DFCSYMTABLE_H
  35.  
  36. #ifndef NeedFunctionPrototypes
  37. #if defined(__STDC__)||defined(__cplusplus)
  38. #define NeedFunctionPrototypes 1
  39. #else
  40. #define NeedFunctionPrototypes 0
  41. #endif  /* __STDC__ */
  42. #endif  /* NeedFunctionPrototypes */
  43.  
  44. #ifdef __cplusplus
  45.   extern "C" {    /* for c++ */
  46. #endif
  47.  
  48. typedef enum {
  49.     arg_symbol, const_symbol, fnct_symbol
  50. } Symbol_type;
  51.  
  52. typedef struct symbol_record
  53. /* association between symbol and its content */ 
  54. {
  55.     char*        name;
  56.     Symbol_type  type;
  57.     union {
  58.        int    argidx;
  59.        double value;
  60.        double (*fnctptr)();
  61.     } content;
  62.     struct symbol_record* next;
  63. } Symbol_record;
  64.  
  65. #if NeedFunctionPrototypes
  66.    extern Symbol_record* getsym(char* name);
  67.    extern char* getfnctname(double (*fnctptr)()); 
  68.    extern char* getarguname(int argidx);
  69.    extern int initargu(void);
  70.  
  71.    extern int nameargu(char* name4arg1, char* name4arg2);
  72.    extern int namefnct(char* name, double (*fnctptr)());
  73.    extern int namecnst(char* name, double constexpress);
  74.    extern int clrfnct(char* name);
  75.    extern int clrfnctall(void);
  76.    extern int clrcnst(char* name);
  77.    extern int clrcnstall(void);
  78.  
  79.    extern int matha2z(void);
  80. #else
  81.    extern Symbol_record* getsym();   /* searching symbol in sym_table */
  82.    extern char* getfnctname();
  83.    extern char* getarguname();
  84.    extern int initargu();
  85.  
  86.    extern int nameargu();
  87.    extern int namefnct();            /* function alias name */
  88.    extern int namecnst();            /* constant alias name */
  89.    extern int clrfnct();
  90.    extern int clrfnctall();
  91.    extern int clrcnst();
  92.    extern int clrcnstall();
  93.  
  94.    extern int matha2z();
  95. #endif /* NeedFunctionPrototypes */
  96.  
  97. #ifdef __cplusplus
  98.   }    /* end for c++ */
  99. #endif
  100.  
  101. #endif /* _DFCSYMTABLE_H */
  102.